package megrez.bussiness.system.repository;

import java.util.List;
import java.util.Optional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

import megrez.bussiness.system.entity.Area;

/**
 * 地区数据接口
 *  
 * @author Lucky Yang
 * @since 0.0.1
 */
public interface AreaRepository extends JpaRepository<Area, Long>, JpaSpecificationExecutor<Area> {
    /**
     * 查询顶级地区
     * @return
     */
    List<Area> findByParentIsNull();

    /**
     * 统计子地区个数
     * 
     * @param parent 父地区
     * @return
     */
    long countByParent(Area parent);

    /**
     * 查询
     * 
     * @param code 代码
     * @return
     */
    Optional<Area> findByCode(String code);

    /**
     * 查询
     * 
     * @param area 父地区
     * @return
     */
    List<Area> findByParent(Area area);

    /**
     * 查询
     * 
     * @param pathCode code路径
     * @return
     */
    List<Area> findByPathCodeLike(String pathCode);
}
